#include <Arduino.h>
#include <U8g2lib.h>
#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif
#define U8X8_HAVE_HW_I2C
/*
https://www.idzd.top/archives/678/
U8g2驱动库构造函数
U8g2驱动库构造函数格式如下：

U8G2_ 屏幕控制器型号 _ 分辨率 _ 显示名称 _ 缓冲模式(1,2,F) _ 通讯方式 u8g2( 参数 );

例如：
//SSD1306,128x64,全屏缓冲模式,模拟I2C,I2C,u8g2(旋转0度,时钟,数据,重置)
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, SCL,  SDA, U8X8_PIN_NONE);
你可以点击这里查看已支持的显示控制器构造函数

屏幕控制器型号
这个就是你oled屏幕控制器的型号，比如SSD1306;
屏幕分辨率
这个就是你oled屏幕控制器的型号，比如在上图中0.96oled屏幕的控制器就是SSD1306。
显示名称
这个就是你oled屏幕名称，比如在上图中0.96oled屏幕没有提供名称，所以使用NONAME。
缓冲模式
缓冲模式有三种：
1,页面缓冲模式（图片循环）。数字表示在微控制器RAM中保留几页。缓冲越多，速度越快。
2,同上，但比1的速度快两倍。
F,全屏缓冲模式。
页面缓冲模式（图片循环）
利弊

可以使用所有图形程序
只需要一点RAM
慢
设定

从此处使用U8g2构造函数。构造函数必须包含“ 1”或“ 2”字符。例如：

U8G2_ST7920_128X64_1_SW_SPI(rotation, clock, data, cs [, reset])

用法

调用u8g2.firstPage（）。
开始做一个do-while循环
在循环体内：用常规的绘制命令绘制一些东西。
只要u8g2.nextPage（）返回true，就循环。
注意：始终在循环体内创建相同的图片。在这里查看详细信息。

全屏缓冲模式
利弊

快速
可以使用所有图形程序
需要大量的RAM
设定

从此处使用U8g2构造函数。构造函数必须包含“ F”字符。例如：

U8G2_ST7920_128X64_F_SW_SPI(rotation, clock, data, cs [, reset])

用法

使用u8g2.clearBuffer()清除缓冲区。
用通常的绘制命令绘制一些东西。
使用u8g2.sendBuffer()将缓冲区发送到显示器。
U8x8字符模式（仅支持字符）
ps: U8x8字符模式使用其他方式的构造函数，详情查看这里

利弊

快速
无需RAM
无法显示图片
不适用于所有显示器
设定
从此处使用U8x8构造函数。例如：

U8X8_ST7565_EA_DOGM128_4W_SW_SPI(clock, data, cs, dc [, reset])

用法

所有绘制命令均直接写入显示屏。

通讯方式
4W_SW_SPI ，4线（时钟，数据，CS和DC）软件模拟SPI
4W_HW_SPI ，4线（时钟，数据，CS和DC）硬件SPI（基于Arduino SPI库）
2ND_4W_HW_SPI ，如果支持，第二个4线硬件SPI（基于Arduino SPI库）
3W_SW_SPI ，3线（时钟，数据和CS）软件模拟SPI
SW_I2C ，软件模拟I2C/TWI
HW_I2C ，硬件I2C（基于Arduino Wire库）
2ND_HW_I2C ，如果支持，请使用第二个硬件I2C（Arduino Wire lib）
6800 ，8位并行接口，6800协议
8080 ，8位并行接口，8080协议
通讯方式参数
4W_SW_SPI（旋转，时钟，数据，CS，DC ，[复位引脚]）
4W_HW_SPI（旋转，CS，DC ，[复位引脚]）
2ND_4W_HW_SPI（旋转，CS，DC ，[复位引脚]）
3W_SW_SPI（旋转，时钟，数据，CS ，[复位引脚]）
SW_I2C（旋转，时钟，数据，[复位引脚]）
HW_I2C（旋转，[复位引脚，[时钟，数据]]）
2ND_HW_I2C（旋转，[复位引脚]）
6800（旋转，d0，d1，d2，d3，d4，d5，d6，d7，使能，CS，DC ，[复位引脚]）
8080（旋转，d0，d1，d2，d3，d4，d5，d6，d7，使能，CS，DC ，[复位引脚]）
参数说明

旋转，控制屏幕方向

U8G2_R0 ，不旋转，横向
U8G2_R1 ，顺时针旋转90度
U8G2_R2 ，顺时针旋转180度
U8G2_R3 ，顺时针旋转270度
U8G2_MIRROR ，无旋转，横向，显示内容已镜像（v2.6.x)
时钟 ，SPI或I2C时钟线，例如：SCL，SCLK，...
数据 ，SPI或I2C数据线，例如：SDA，MOSI，SDIN，...
D0 ~ D7 ，并行接口的数据线，例如：D0 ~ D7
CS ，片选线，例如：CS
DC ，数据/命令选择行（寄存器选择），例如：D/C，A0，RS，...
使能 ，8080界面为“Write”;6800界面为“enable” ，例如：8080：WR，6800：E
复位引脚 ， 复位



*/
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/SCL, /* data=*/SDA, /* reset=*/U8X8_PIN_NONE); // All Boards without Reset of the Display
void setup()
{
    u8g2.begin();

    u8g2.setFont(u8g2_font_wqy15_t_gb2312);
    u8g2.clearBuffer();
    u8g2.drawUTF8(0, 15, "test");
    u8g2.sendBuffer();
}
void loop() {}
